Predictive analytics factory

ABSTRACT

Apparatuses, systems, methods, and computer program products are disclosed for a predictive analytics factory. A function generator module is configured to determine a plurality of learned functions based on training data without prior knowledge regarding suitability of the generated learned functions for the training data. A function evaluator module is configured to perform an evaluation of the plurality of learned functions using test data and to maintain evaluation metadata for the plurality of learned functions. A predictive compiler module is configured to form a predictive ensemble comprising a subset of multiple learned functions from the plurality of learned functions.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application claims the benefit of U.S. patent application Ser. No.13/870,861 entitled “PREDICTIVE ANALYTICS FACTORY” and filed on Apr. 25,2013 for Richard W. Wellman, et al., which claims the benefit of U.S.Provisional Patent Application No. 61/727,114 entitled “PREDICTIVEANALYTICS FACTORY” and filed on Nov. 15, 2012 for Richard W. Wellman, etal., which are incorporated herein by reference.

TECHNICAL FIELD

The present disclosure, in various embodiments, relates to analytics andmore particularly relates to an automated factory for predictiveanalytics.

BACKGROUND

Data analytics models are typically highly tuned and customized for aparticular application. Such tuning and customization often requirespre-existing knowledge about the particular application, and can requirethe use of complex manual tools to achieve this tuning andcustomization. For example, an expert in a certain field may carefullytune and customize an analytics model for use in the expert's fieldusing a manual tool.

While a highly tuned, expert customized analytics model may be usefulfor a particular application or field, because of the high level oftuning and customization, the analytics model is typically useless or atleast inaccurate for other applications and fields. Conversely, ageneral purpose analytics framework typically is not specialized enoughfor most applications without substantial customization.

SUMMARY

From the foregoing discussion, it should be apparent that a need existsfor an apparatus, system, method, and computer program product togenerate a predictive ensemble in an automated manner. Beneficially,such an apparatus, system, method, and computer program product wouldcomprise a predictive analytics factory configured to generate apredictive ensemble regardless of the particular field or application,with little or no input from a user or expert.

The present disclosure has been developed in response to the presentstate of the art, and in particular, in response to the problems andneeds in the art that have not yet been fully solved by currentlyavailable analytics methods. Accordingly, the present disclosure hasbeen developed to provide an apparatus, system, method, and computerprogram product for a predictive analytics factory that overcome many orall of the above-discussed shortcomings in the art.

Apparatuses are presented for a predictive analytics factory. In oneembodiment, a function generator module is configured to determine aplurality of learned functions based on the training data without priorknowledge regarding a suitability of the generated learned functions forthe training data. A function evaluator module, in certain embodiments,is configured to perform an evaluation of the plurality of learnedfunctions using test data and to maintain evaluation metadata for theplurality of learned functions. A predictive compiler module, in afurther embodiment, is configured to form a predictive ensemble based onthe evaluation metadata. The ensemble, in one embodiment, comprises asubset of multiple learned functions from the plurality of learnedfunctions.

Methods are presented for a predictive analytics factory. In oneembodiment, a method includes pseudo-randomly generating a plurality oflearned functions based on training data without prior knowledgeregarding suitability of the generated learned functions for thetraining data. A method, in another embodiment, includes evaluating aplurality of learned functions using test data to generate evaluationmetadata. In another embodiment, a method includes forming a predictiveensemble comprising a subset of learned functions from a plurality oflearned functions, where the subset of learned functions are selectedbased on evaluation metadata.

Systems are presented for a predictive analytics factory. In oneembodiment, a host computing device is in communication with at leastone client. A predictive analytics module, in certain embodiments,executes on the host computing device. The predictive analytics module,in one embodiment, determines a plurality of learned functions usingtraining data received from the at least one client without priorknowledge regarding suitability of the determined learned functions forthe training data. The predictive analytics module, in a furtherembodiment, selects a subset of the learned functions based onevaluation metadata generated for the plurality of learned functions. Inone embodiment, the predictive analytics module forms a predictiveensemble comprising the selected subset of the learned functions fromthe plurality of learned functions.

A predictive analytics ensemble is presented. In one embodiment, apredictive analytics ensemble includes multiple learned functionssynthesized from a larger plurality of learned functions. The largerplurality of learned functions, in certain embodiments, are generatedfrom training data without prior knowledge of a suitability of thelarger plurality of learned functions for the training data. In afurther embodiment, a predictive analytics ensemble includes a metadatarule set synthesized from the evaluation metadata for the plurality oflearned functions for directing data through different learned functionsto produce a result. A predictive analytics ensemble, in anotherembodiment, includes an orchestration module configured to direct thedata through the different learned functions based on the synthesizedmetadata rule set to produce the result.

Reference throughout this specification to features, advantages, orsimilar language does not imply that all of the features and advantagesthat may be realized with the present disclosure should be or are in anysingle embodiment of the disclosure. Rather, language referring to thefeatures and advantages is understood to mean that a specific feature,advantage, or characteristic described in connection with an embodimentis included in at least one embodiment of the present disclosure. Thus,discussion of the features and advantages, and similar language,throughout this specification may, but do not necessarily, refer to thesame embodiment.

Furthermore, the described features, advantages, and characteristics ofthe disclosure may be combined in any suitable manner in one or moreembodiments. The disclosure may be practiced without one or more of thespecific features or advantages of a particular embodiment. In otherinstances, additional features and advantages may be recognized incertain embodiments that may not be present in all embodiments of thedisclosure.

These features and advantages of the present disclosure will become morefully apparent from the following description and appended claims, ormay be learned by the practice of the disclosure as set forthhereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

In order that the advantages of the disclosure will be readilyunderstood, a more particular description of the disclosure brieflydescribed above will be rendered by reference to specific embodimentsthat are illustrated in the appended drawings. Understanding that thesedrawings depict only typical embodiments of the disclosure and are nottherefore to be considered to be limiting of its scope, the disclosurewill be described and explained with additional specificity and detailthrough the use of the accompanying drawings, in which:

FIG. 1 is a schematic block diagram illustrating one embodiment of asystem for a predictive analytics factory;

FIG. 2 is a schematic block diagram illustrating one embodiment of apredictive analytics module;

FIG. 3 is a schematic block diagram illustrating another embodiment of apredictive analytics module;

FIG. 4 is a schematic block diagram illustrating another embodiment of asystem for a predictive analytics factory;

FIG. 5 is a schematic block diagram illustrating one embodiment oflearned functions for a predictive ensemble;

FIG. 6 is a schematic flow chart diagram illustrating one embodiment ofa method for a predictive analytics factory;

FIG. 7 is a schematic flow chart diagram illustrating another embodimentof a method for a predictive analytics factory; and

FIG. 8 is a schematic flow chart diagram illustrating one embodiment ofa method for directing data through a predictive ensemble.

DETAILED DESCRIPTION

Aspects of the present disclosure may be embodied as a system, method orcomputer program product. Accordingly, aspects of the present disclosuremay take the form of an entirely hardware embodiment, an entirelysoftware embodiment (including firmware, resident software, micro-code,etc.) or an embodiment combining software and hardware aspects that mayall generally be referred to herein as a “circuit,” “module” or“system.” Furthermore, aspects of the present disclosure may take theform of a computer program product embodied in one or more computerreadable storage media having computer readable program code embodiedthereon.

Many of the functional units described in this specification have beenlabeled as modules, in order to more particularly emphasize theirimplementation independence. For example, a module may be implemented asa hardware circuit comprising custom VLSI circuits or gate arrays,off-the-shelf semiconductors such as logic chips, transistors, or otherdiscrete components. A module may also be implemented in programmablehardware devices such as field programmable gate arrays, programmablearray logic, programmable logic devices or the like.

Modules may also be implemented in software for execution by varioustypes of processors. An identified module of executable code may, forinstance, comprise one or more physical or logical blocks of computerinstructions which may, for instance, be organized as an object,procedure, or function. Nevertheless, the executables of an identifiedmodule need not be physically located together, but may comprisedisparate instructions stored in different locations which, when joinedlogically together, comprise the module and achieve the stated purposefor the module.

Indeed, a module of executable code may be a single instruction, or manyinstructions, and may even be distributed over several different codesegments, among different programs, and across several memory devices.Similarly, operational data may be identified and illustrated hereinwithin modules, and may be embodied in any suitable form and organizedwithin any suitable type of data structure. The operational data may becollected as a single data set, or may be distributed over differentlocations including over different storage devices, and may exist, atleast partially, merely as electronic signals on a system or network.Where a module or portions of a module are implemented in software, thesoftware portions are stored on one or more computer readable storagemedia.

Any combination of one or more computer readable storage media may beutilized. A computer readable storage medium may be, for example, butnot limited to, an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system, apparatus, or device, or any suitablecombination of the foregoing.

More specific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: a portable computerdiskette, a hard disk, a random access memory (RAM), a read-only memory(ROM), an erasable programmable read-only memory (EPROM or Flashmemory), a portable compact disc read-only memory (CD-ROM), a digitalversatile disc (DVD), a Blu-ray disc, an optical storage device, amagnetic tape, a Bernoulli drive, a magnetic disk, a magnetic storagedevice, a punch card, integrated circuits, other digital processingapparatus memory devices, or any suitable combination of the foregoing,but would not include propagating signals. In the context of thisdocument, a computer readable storage medium may be any tangible mediumthat can contain, or store a program for use by or in connection with aninstruction execution system, apparatus, or device.

Computer program code for carrying out operations for aspects of thepresent disclosure may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java, Python, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider).

Reference throughout this specification to “one embodiment,” “anembodiment,” or similar language means that a particular feature,structure, or characteristic described in connection with the embodimentis included in at least one embodiment of the present disclosure. Thus,appearances of the phrases “in one embodiment,” “in an embodiment,” andsimilar language throughout this specification may, but do notnecessarily, all refer to the same embodiment, but mean “one or more butnot all embodiments” unless expressly specified otherwise. The terms“including,” “comprising,” “having,” and variations thereof mean“including but not limited to” unless expressly specified otherwise. Anenumerated listing of items does not imply that any or all of the itemsare mutually exclusive and/or mutually inclusive, unless expresslyspecified otherwise. The terms “a,” “an,” and “the” also refer to “oneor more” unless expressly specified otherwise.

Furthermore, the described features, structures, or characteristics ofthe disclosure may be combined in any suitable manner in one or moreembodiments. In the following description, numerous specific details areprovided, such as examples of programming, software modules, userselections, network transactions, database queries, database structures,hardware modules, hardware circuits, hardware chips, etc., to provide athorough understanding of embodiments of the disclosure. However, thedisclosure may be practiced without one or more of the specific details,or with other methods, components, materials, and so forth. In otherinstances, well-known structures, materials, or operations are not shownor described in detail to avoid obscuring aspects of the disclosure.

Aspects of the present disclosure are described below with reference toschematic flowchart diagrams and/or schematic block diagrams of methods,apparatuses, systems, and computer program products according toembodiments of the disclosure. It will be understood that each block ofthe schematic flowchart diagrams and/or schematic block diagrams, andcombinations of blocks in the schematic flowchart diagrams and/orschematic block diagrams, can be implemented by computer programinstructions. These computer program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the schematic flowchartdiagrams and/or schematic block diagrams block or blocks.

These computer program instructions may also be stored in a computerreadable storage medium that can direct a computer, other programmabledata processing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablestorage medium produce an article of manufacture including instructionswhich implement the function/act specified in the schematic flowchartdiagrams and/or schematic block diagrams block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The schematic flowchart diagrams and/or schematic block diagrams in theFigures illustrate the architecture, functionality, and operation ofpossible implementations of apparatuses, systems, methods and computerprogram products according to various embodiments of the presentdisclosure. In this regard, each block in the schematic flowchartdiagrams and/or schematic block diagrams may represent a module,segment, or portion of code, which comprises one or more executableinstructions for implementing the specified logical function(s).

It should also be noted that, in some alternative implementations, thefunctions noted in the block may occur out of the order noted in thefigures. For example, two blocks shown in succession may, in fact, beexecuted substantially concurrently, or the blocks may sometimes beexecuted in the reverse order, depending upon the functionalityinvolved. Other steps and methods may be conceived that are equivalentin function, logic, or effect to one or more blocks, or portionsthereof, of the illustrated figures.

Although various arrow types and line types may be employed in theflowchart and/or block diagrams, they are understood not to limit thescope of the corresponding embodiments. Indeed, some arrows or otherconnectors may be used to indicate only the logical flow of the depictedembodiment. For instance, an arrow may indicate a waiting or monitoringperiod of unspecified duration between enumerated steps of the depictedembodiment. It will also be noted that each block of the block diagramsand/or flowchart diagrams, and combinations of blocks in the blockdiagrams and/or flowchart diagrams, can be implemented by specialpurpose hardware-based systems that perform the specified functions oracts, or combinations of special purpose hardware and computerinstructions.

The description of elements in each figure may refer to elements ofproceeding figures. Like numbers refer to like elements in all figures,including alternate embodiments of like elements.

FIG. 1 depicts one embodiment of a system 100 for a predictive analyticsfactory. The system 100, in the depicted embodiment, includes apredictive analytics module 102 that is in communication with severalclients 104 over a data network 106, and with several clients 104 over alocal channel 108, such as a system bus, an application programminginterface (API), or the like. A client 104 may comprise a softwareapplication, a user, a hardware computing device with a processor andmemory, or another entity in communication with the predictive analyticsmodule 102. In general, the predictive analytics module 102 generatespredictive ensembles for the clients 104. In certain embodiments, thepredictive analytics module 102 provides a predictive analyticsframework allowing clients 104 to request predictive ensembles, to makeanalysis requests, and to receive predictive results, such as aclassification, a confidence metric, an inferred function, a regressionfunction, an answer, a prediction, a recognized pattern, a rule, arecommendation, or other results.

Predictive analytics is the study of past performance, or patterns,found in historical and transactional data to identify behavior andtrends in future events. This may be accomplished using a variety ofstatistical techniques including modeling, machine learning, datamining, or the like.

One term for large, complex, historical data sets is Big Data. Examplesof Big Data include web logs, social networks, blogs, system log files,call logs, customer data, user feedback, or the like. These data setsmay often be so large and complex that they are awkward and difficult towork with using traditional tools. With technological advances incomputing resources, including memory, storage, and computational power,along with frameworks and programming models for data-intensivedistributed applications, the ability to collect, analyze and mine thesehuge repositories of structured, unstructured, and/or semi-structureddata has only recently become possible.

In certain embodiments, prediction may be applied through at least twogeneral techniques: Regression and Classification.

Regression models attempt to fit a mathematical equation to approximatethe relationship between the variables being analyzed. These models mayinclude “Discrete Choice” models such as Logistic Regression,Multinomial Logistic Regression, Probit Regression, or the like. Whenfactoring in time, Time Series models may be used, such as AutoRegression—AR, Moving Average—MA, ARMA, AR ConditionalHeteroskedasticity—ARCH, Generalized ARCH—GARCH and Vector AR—VAR).Other models include Survival or Duration analysis, Classification andRegression Trees (CART), Multivariate Adaptive Regression Splines(MARS), and the like.

Classification is a form of artificial intelligence that usescomputational power to execute complex algorithms in an effort toemulate human cognition. One underlying problem, however, remains:determining the set of all possible behaviors given all possible inputsis much too large to be included in a set of observed examples.Classification methods may include Neural Networks, Radial BasisFunctions, Support Vector Machines, Naïve Bayes, k-Nearest Neighbors,Geospatial Predictive modeling, and the like.

Each of these forms of modeling make assumptions about the data set andmodel the given data, however, some models are more accurate than othersand none of the models are ideal. Historically, using predictiveanalytics tools was a cumbersome and difficult process, often involvingthe engagement of a Data Scientist or other expert. Any easier-to-usetools or interfaces for general business users, however, typically fallshort in that they still require “heavy lifting” by IT personnel inorder to present and massage data and results. A Data Scientisttypically must determine the optimal class of learning machines thatwould be the most applicable for a given data set, and rigorously testthe selected hypothesis by first fine-tuning the learning machineparameters and second by evaluating results fed by trained data.

The predictive analytics module 102, in certain embodiments, generatespredictive ensembles for the clients 104, with little or no input from aData Scientist or other expert, by generating a large number of learnedfunctions from multiple different classes, evaluating, combining, and/orextending the learned functions, synthesizing selected learnedfunctions, and organizing the synthesized learned functions into apredictive ensemble. The predictive analytics module 102, in oneembodiment, services analysis requests for the clients 104 using thegenerated predictive ensembles.

By generating a large number of learned functions, without regard to theeffectiveness of the generated learned functions, without priorknowledge of the generated learned functions suitability, or the like,and evaluating the generated learned functions, in certain embodiments,the predictive analytics module 102 may provide predictive ensemblesthat are customized and finely tuned for data from a specific client104, without excessive intervention or fine-tuning. The predictiveanalytics module 102, in a further embodiment, may generate and evaluatea large number of learned functions using parallel computing on multipleprocessors, such as a massively parallel processing (MPP) system or thelike.

The predictive analytics module 102 may service predictive analyticsrequests to clients 104 locally, executing on the same host computingdevice as the predictive analytics module 102, by providing an API toclients 104, receiving function calls from clients 104, providing ahardware command interface to clients 104, or otherwise providing alocal channel 108 to clients 104. In a further embodiment, thepredictive analytics module 102 may service predictive analyticsrequests to clients 104 over a data network 106, such as a local areanetwork (LAN), a wide area network (WAN) such as the Internet as a cloudservice, a wireless network, a wired network, or another data network106.

FIG. 2 depicts one embodiment of a predictive analytics module 102. Thepredictive analytics module 102 of FIG. 2, in certain embodiments, maybe substantially similar to the predictive analytics module 102described above with regard to FIG. 1. In the depicted embodiment, thepredictive analytics module 102 includes a data receiver module 202, afunction generator module 204, and a predictive compiler module 206.

The data receiver module 202, in certain embodiments, is configured toreceive client data, such as training data, test data, workload data, orthe like, from a client 104, either directly or indirectly. The datareceiver module 202, in various embodiments, may receive data over alocal channel 108 such as an API, a shared library, a hardware commandinterface, or the like; over a data network 106 such as wired orwireless LAN, WAN, the Internet, a serial connection, a parallelconnection, or the like. In certain embodiments, the data receivermodule 202 may receive data indirectly from a client 104 through anintermediate module that may pre-process, reformat, or otherwise preparethe data for the predictive analysis module 102. The data receivermodule 202 may support structured data, unstructured data,semi-structured data, or the like.

One type of data that the data receiver module 202 may receive, as partof a new ensemble request or the like, is initialization data. Thepredictive analytics module 102, in certain embodiments, may useinitialization data to train and test learned functions from which thepredictive analytics module 102 may build a predictive ensemble.Initialization data may comprise historical data, statistics, Big Data,customer data, marketing data, computer system logs, computerapplication logs, data networking logs, or other data that a client 104provides to the data receiver module 202 with which to build,initialize, train, and/or test a predictive ensemble.

Another type of data that the data receiver module 202 may receive, aspart of an analysis request or the like, is workload data. Thepredictive analytics module 102, in certain embodiments, may processworkload data using a predictive ensemble to obtain a result, such as aclassification, a confidence metric, an inferred function, a regressionfunction, an answer, a prediction, a recognized pattern, a rule, arecommendation, or the like. Workload data for a specific predictiveensemble, in one embodiment, has substantially the same format as theinitialization data used to train and/or evaluate the predictiveensemble. For example, initialization data and/or workload data mayinclude one or more features. As used herein, a feature may comprise acolumn, category, data type, attribute, characteristic, label, or othergrouping of data. For example, in embodiments where initialization dataand/or workload data that is organized in a table format, a column ofdata may be a feature. Initialization data and/or workload data mayinclude one or more instances of the associated features. In a tableformat, where columns of data are associated with features, a row ofdata is an instance.

As described below with regard to FIG. 4, in one embodiment, the datareceiver module 202 may maintain client data, such as initializationdata and/or workload data, in a data repository 406, where the functiongenerator module 204, the predictive compiler module 206, or the likemay access the data. In certain embodiments, as described below, thefunction generator module 204 and/or the predictive compiler module 206may divide initialization data into subsets, using certain subsets ofdata as training data for generating and training learned functions andusing certain subsets of data as test data for evaluating generatedlearned functions.

The function generator module 204, in certain embodiments, is configuredto generate a plurality of learned functions based on training data fromthe data receiver module 202. A learned function, as used herein,comprises a computer readable code that accepts an input and provides aresult. A learned function may comprise a compiled code, a script, text,a data structure, a file, a function, or the like. In certainembodiments, a learned function may accept instances of one or morefeatures as input, and provide a result, such as a classification, aconfidence metric, an inferred function, a regression function, ananswer, a prediction, a recognized pattern, a rule, a recommendation, orthe like. In another embodiment, certain learned functions may acceptinstances of one or more features as input, and provide a subset of theinstances, a subset of the one or more features, or the like as anoutput. In a further embodiment, certain learned functions may receivethe output or result of one or more other learned functions as input,such as a Bayes classifier, a Boltzmann machine, or the like.

The function generator module 204 may generate learned functions frommultiple different predictive analytics classes, models, or algorithms.For example, the function generator module 204 may generate decisiontrees; decision forests; kernel classifiers and regression machines witha plurality of reproducing kernels; non-kernel regression andclassification machines such as logistic, CART, multi-layer neural netswith various topologies; Bayesian-type classifiers such as Naïve Bayesand Boltzmann machines; logistic regression; multinomial logisticregression; probit regression; AR; MA; ARMA; ARCH; GARCH; VAR; survivalor duration analysis; MARS; radial basis functions; support vectormachines; k-nearest neighbors; geospatial predictive modeling; and/orother classes of learned functions.

In one embodiment, the function generator module 204 generates learnedfunctions pseudo-randomly, without regard to the effectiveness of thegenerated learned functions, without prior knowledge regarding thesuitability of the generated learned functions for the associatedtraining data, or the like. For example, the function generator module204 may generate a total number of learned functions that is largeenough that at least a subset of the generated learned functions arestatistically likely to be effective. As used herein, pseudo-randomlyindicates that the function generator module 204 is configured togenerate learned functions in an automated manner, without input orselection of learned functions, predictive analytics classes or modelsfor the learned functions, or the like by a Data Scientist, expert, orother user.

The function generator module 204, in certain embodiments, generates asmany learned functions as possible for a requested predictive ensemble,given one or more parameters or limitations. A client 104 may provide aparameter or limitation for learned function generation as part of a newensemble request or the like to an interface module 402 as describedbelow with regard to FIG. 4, such as an amount of time; an allocation ofsystem resources such as a number of processor nodes or cores, or anamount of volatile memory; a number of learned functions; runtimeconstraints on the requested ensemble such as an indicator of whether ornot the requested ensemble should provide results in real-time; and/oranother parameter or limitation from a client 104.

The number of learned functions that the function generator module 204may generate for building a predictive ensemble may also be limited bycapabilities of the system 100, such as a number of available processorsor processor cores, a current load on the system 100, a price of remoteprocessing resources over the data network 106; or other hardwarecapabilities of the system 100 available to the function generatormodule 204. The function generator module 204 may balance the hardwarecapabilities of the system 100 with an amount of time available forgenerating learned functions and building a predictive ensemble todetermine how many learned functions to generate for the predictiveensemble.

In one embodiment, the function generator module 204 may generate atleast 50 learned functions for a predictive ensemble. In a furtherembodiment, the function generator module 204 may generate hundreds,thousands, or millions of learned functions, or more, for a predictiveensemble. By generating an unusually large number of learned functionsfrom different classes without regard to the suitability oreffectiveness of the generated learned functions for training data, incertain embodiments, the function generator module 204 ensures that atleast a subset of the generated learned functions, either individuallyor in combination, are useful, suitable, and/or effective for thetraining data without careful curation and fine tuning by a DataScientist or other expert.

Similarly, by generating learned functions from different predictiveanalytics classes without regard to the effectiveness or the suitabilityof the different predictive analytics classes for training data, thefunction generator module 204, in certain embodiments, may generatelearned functions that are useful, suitable, and/or effective for thetraining data due to the sheer amount of learned functions generatedfrom the different predictive analytics classes. This brute force,trial-and-error approach to generating learned functions, in certainembodiments, eliminates or minimizes the role of a Data Scientist orother expert in generation of a predictive ensemble.

The function generator module 204, in certain embodiments, dividesinitialization data from the data receiver module 202 into varioussubsets of training data, and may use different training data subsets,different combinations of multiple training data subsets, or the like togenerate different learned functions. The function generator module 204may divide the initialization data into training data subsets byfeature, by instance, or both. For example, a training data subset maycomprise a subset of features of initialization data, a subset offeatures of initialization data, a subset of both features and instancesof initialization data, or the like. Varying the features and/orinstances used to train different learned functions, in certainembodiments, may further increase the likelihood that at least a subsetof the generated learned functions are useful, suitable, and/oreffective. In a further embodiment, the function generator module 204ensures that the available initialization data is not used in itsentirety as training data for any one learned function, so that at leasta portion of the initialization data is available for each learnedfunction as test data, which is described in greater detail below withregard to the function evaluator module 312 of FIG. 3.

In one embodiment, the function generator module 204 may also generateadditional learned functions in cooperation with the predictive compilermodule 206. The function generator module 204 may provide a learnedfunction request interface, allowing the predictive compiler module 206or another module, a client 104, or the like to send a learned functionrequest to the function generator module 204 requesting that thefunction generator module 204 generate one or more additional learnedfunctions. In one embodiment, a learned function request may include oneor more attributes for the requested one or more learned functions. Forexample, a learned function request, in various embodiments, may includea predictive analytics class for a requested learned function, one ormore features for a requested learned function, instances frominitialization data to use as training data for a requested learnedfunction, runtime constraints on a requested learned function, or thelike. In another embodiment, a learned function request may identifyinitialization data, training data, or the like for one or morerequested learned functions and the function generator module 204 maygenerate the one or more learned functions pseudo-randomly, as describedabove, based on the identified data.

The predictive compiler module 206, in one embodiment, is configured toform a predictive ensemble using learned functions from the functiongenerator module 204. As used herein, a predictive ensemble comprises anorganized set of a plurality of learned functions. Providing aclassification, a confidence metric, an inferred function, a regressionfunction, an answer, a prediction, a recognized pattern, a rule, arecommendation, or another result using a predictive ensemble, incertain embodiments, may be more accurate than using a single learnedfunction.

The predictive compiler module 206 is described in greater detail belowwith regard to FIG. 3. The predictive compiler module 206, in certainembodiments, may combine and/or extend learned functions to form newlearned functions, may request additional learned functions from thefunction generator module 204, or the like for inclusion in a predictiveensemble. In one embodiment, the predictive compiler module 206evaluates learned functions from the function generator module 204 usingtest data to generate evaluation metadata. The predictive compilermodule 206, in a further embodiment, may evaluate combined learnedfunctions, extended learned functions, combined-extended learnedfunctions, additional learned functions, or the like using test data togenerate evaluation metadata.

The predictive compiler module 206, in certain embodiments, maintainsevaluation metadata in a metadata library 314, as described below withregard to FIGS. 3 and 4. The predictive compiler module 206 may selectlearned functions (e.g. learned functions from the function generatormodule 204, combined learned functions, extended learned functions,learned functions from different predictive analytics classes, and/orcombined-extended learned functions) for inclusion in a predictiveensemble based on the evaluation metadata. In a further embodiment, thepredictive compiler module 206 may synthesize the selected learnedfunctions into a final, synthesized function or function set for apredictive ensemble based on evaluation metadata. The predictivecompiler module 206, in another embodiment, may include synthesizedevaluation metadata in a predictive ensemble for directing data throughthe predictive ensemble or the like.

FIG. 3 depicts another embodiment of a predictive analytics module 102.The predictive analytics module 102 of FIG. 3, in certain embodiments,may be substantially similar to the predictive analytics module 102described above with regard to FIGS. 1 and 2. In the depictedembodiment, the predictive analytics module 102 includes the datareceiver module 202, the function generator module 204, and thepredictive compiler module 206 described above with regard to FIG. 2 andfurther includes a feature selector module 302 a predictive correlationmodule 318, and a predictive ensemble 304. The predictive compilermodule 206, in the depicted embodiment, includes a combiner module 306,an extender module 308, a synthesizer module 310, a function evaluatormodule 312, a metadata library 314, and a function selector module 316.The predictive ensemble 304, in the depicted embodiment, includes anorchestration module 320, a synthesized metadata rule set 322, andsynthesized learned functions 324.

In one embodiment, the feature selector module 302 determines whichfeatures of initialization data to use in the predictive ensemble 304,and in the associated learned functions, and/or which features of theinitialization data to exclude from the predictive ensemble 304, andfrom the associated learned functions. As described above,initialization data, and the training data and test data derived fromthe initialization data, may include one or more features. Learnedfunctions and the predictive ensembles 304 that they form are configuredto receive and process instances of one or more features. Certainfeatures may be more predictive than others, and the more features thatthe predictive compiler module 206 processes and includes in thegenerated predictive ensemble 304, the more processing overhead used bythe predictive compiler module 206, and the more complex the generatedpredictive ensemble 304 becomes. Additionally, certain features may notcontribute to the effectiveness or accuracy of the results from apredictive ensemble 304, but may simply add noise to the results.

The feature selector module 302, in one embodiment, cooperates with thefunction generator module 204 and the predictive compiler module 206 toevaluate the effectiveness of various features, based on evaluationmetadata from the metadata library 314 described below. For example, thefunction generator module 204 may generate a plurality of learnedfunctions for various combinations of features, and the predictivecompiler module 206 may evaluate the learned functions and generateevaluation metadata. Based on the evaluation metadata, the featureselector module 302 may select a subset of features that are mostaccurate or effective, and the predictive compiler module 206 may uselearned functions that utilize the selected features to build thepredictive ensemble 304. The feature selector module 302 may selectfeatures for use in the predictive ensemble 304 based on evaluationmetadata for learned functions from the function generator module 204,combined learned functions from the combiner module 306, extendedlearned functions from the extender module 308, combined extendedfunctions, synthesized learned functions from the synthesizer module310, or the like.

In a further embodiment, the feature selector module 302 may cooperatewith the predictive compiler module 206 to build a plurality ofdifferent predictive ensembles 304 for the same initialization data ortraining data, each different predictive ensemble 304 utilizingdifferent features of the initialization data or training data. Thepredictive compiler module 206 may evaluate each different predictiveensemble 304, using the function evaluator module 312 described below,and the feature selector module 302 may select the predictive ensemble304 and the associated features which are most accurate or effectivebased on the evaluation metadata for the different predictive ensembles304. In certain embodiments, the predictive compiler module 206 maygenerate tens, hundreds, thousands, millions, or more differentpredictive ensembles 304 so that the feature selector module 302 mayselect an optimal set of features (e.g. the most accurate, mosteffective, or the like) with little or no input from a Data Scientist,expert, or other user in the selection process.

In one embodiment, the predictive compiler module 206 may generate apredictive ensemble 304 for each possible combination of features fromwhich the feature selector module 302 may select. In a furtherembodiment, the predictive compiler module 206 may begin generatingpredictive ensembles 304 with a minimal number of features, and mayiteratively increase the number of features used to generate predictiveensembles 304 until an increase in effectiveness or usefulness of theresults of the generated predictive ensembles 304 fails to satisfy afeature effectiveness threshold. By increasing the number of featuresuntil the increases stop being effective, in certain embodiments, thepredictive compiler module 206 may determine a minimum effective set offeatures for use in a predictive ensemble 304, so that generation anduse of the predictive ensemble 304 is both effective and efficient. Thefeature effectiveness threshold may be predetermined or hard coded, maybe selected by a client 104 as part of a new ensemble request or thelike, may be based on one or more parameters or limitations, or thelike.

During the iterative process, in certain embodiments, once the featureselector module 302 determines that a feature is merely introducingnoise, the predictive compiler module 206 excludes the feature fromfuture iterations, and from the predictive ensemble 304. In oneembodiment, a client 104 may identify one or more features as requiredfor the predictive ensemble 304, in a new ensemble request or the like.The feature selector module 302 may include the required features in thepredictive ensemble 304, and select one or more of the remainingoptional features for inclusion in the predictive ensemble 304 with therequired features.

In a further embodiment, based on evaluation metadata from the metadatalibrary 314, the feature selector module 302 determines which featuresfrom initialization data and/or training data are adding noise, are notpredictive, are the least effective, or the like, and excludes thefeatures from the predictive ensemble 304. In other embodiments, thefeature selector module 302 may determine which features enhance thequality of results, increase effectiveness, or the like, and selects thefeatures for the predictive ensemble 304.

In one embodiment, the feature selector module 302 causes the predictivecompiler module 206 to repeat generating, combining, extending, and/orevaluating learned functions while iterating through permutations offeature sets. At each iteration, the function evaluator module 312 maydetermine an overall effectiveness of the learned functions in aggregatefor the current iteration's selected combination of features. Once thefeature selector module 302 identifies a feature as noise introducing,the feature selector module may exclude the noisy feature and thepredictive compiler module 206 may generate a predictive ensemble 304without the excluded feature. In one embodiment, the predictivecorrelation module 318 determines one or more features, instances offeatures, or the like that correlate with higher confidence metrics(e.g., that are most effective in predicting results with highconfidence). The predictive correlation module 318 may cooperate with,be integrated with, or otherwise work in concert with the featureselector module 302 to determine one or more features, instances offeatures, or the like that correlate with higher confidence metrics. Forexample, as the feature selector module 302 causes the predictivecompiler module 206 to generate and evaluate learned functions withdifferent sets of features, the predictive correlation module 318 maydetermine which features and/or instances of features correlate withhigher confidence metrics, are most effective, or the like based onmetadata from the metadata library 314.

The predictive correlation module 318, in certain embodiments, isconfigured to harvest metadata regarding which features correlate tohigher confidence metrics, to determine which feature was predictive ofwhich outcome or result, or the like. In one embodiment, the predictivecorrelation module 318 determines the relationship of a feature'spredictive qualities for a specific outcome or result based on eachinstance of a particular feature. In other embodiments, the predictivecorrelation module 318 may determine the relationship of a feature'spredictive qualities based on a subset of instances of a particularfeature. For example, the predictive correlation module 318 may discovera correlation between one or more features and the confidence metric ofa predicted result by attempting different combinations of features andsubsets of instances within an individual feature's dataset, andmeasuring an overall impact on predictive quality, accuracy, confidence,or the like. The predictive correlation module 318 may determinepredictive features at various granularities, such as per feature, persubset of features, per instance, or the like.

In one embodiment, the predictive correlation module 318 determines oneor more features with a greatest contribution to a predicted result orconfidence metric as the predictive compiler module 206 forms thepredictive ensemble 304, based on evaluation metadata from the metadatalibrary 314, or the like. For example, the predictive compiler module206 may build one or more synthesized learned functions 324 that areconfigured to provide one or more features with a greatest contributionas part of a result. In another embodiment, the predictive correlationmodule 318 may determine one or more features with a greatestcontribution to a predicted result or confidence metric dynamically atruntime as the predictive ensemble 304 determines the predicted resultor confidence metric. In such embodiments, the predictive correlationmodule 318 may be part of, integrated with, or in communication with thepredictive ensemble 304. The predictive correlation module 318 maycooperate with the predictive ensemble 304, such that the predictiveensemble 304 provides a listing of one or more features that provided agreatest contribution to a predicted result or confidence metric as partof a response to an analysis request.

In determining features that are predictive, or that have a greatestcontribution to a predicted result or confidence metric, the predictivecorrelation module 318 may balance a frequency of the contribution of afeature and/or an impact of the contribution of the feature. Forexample, a certain feature or set of features may contribute to thepredicted result or confidence metric frequently, for each instance orthe like, but have a low impact. Another feature or set of features maycontribute relatively infrequently, but has a very high impact on thepredicted result or confidence metric (e.g. provides at or near 100%confidence or the like). While the predictive correlation module 318 isdescribed herein as determining features that are predictive or thathave a greatest contribution, in other embodiments, the predictivecorrelation module 318 may determine one or more specific instances of afeature that are predictive, have a greatest contribution to a predictedresult or confidence metric, or the like.

In the depicted embodiment, the predictive compiler module 206 includesa combiner module 306. The combiner module 306 combines learnedfunctions, forming sets, strings, groups, trees, or clusters of combinedlearned functions. In certain embodiments, the combiner module 306combines learned functions into a prescribed order, and different ordersof learned functions may have different inputs, produce differentresults, or the like. The combiner module 306 may combine learnedfunctions in different combinations. For example, the combiner module306 may combine certain learned functions horizontally or in parallel,joined at the inputs and at the outputs or the like, and may combinecertain learned functions vertically or in series, feeding the output ofone learned function into the input of another learned function.

The combiner module 306 may determine which learned functions tocombine, how to combine learned functions, or the like based onevaluation metadata for the learned functions from the metadata library314, generated based on an evaluation of the learned functions usingtest data, as described below with regard to the function evaluatormodule 312. The combiner module 306 may request additional learnedfunctions from the function generator module 204, for combining withother learned functions. For example, the combiner module 306 mayrequest a new learned function with a particular input and/or output tocombine with an existing learned function, or the like.

While the combining of learned functions may be informed by evaluationmetadata for the learned functions, in certain embodiments, the combinermodule 306 combines a large number of learned functions pseudo-randomly,forming a large number of combined functions. For example, the combinermodule 306, in one embodiment, may determine each possible combinationof generated learned functions, as many combinations of generatedlearned functions as possible given one or more limitations orconstraints, a selected subset of combinations of generated learnedfunctions, or the like, for evaluation by the function evaluator module312. In certain embodiments, by generating a large number of combinedlearned functions, the combiner module 306 is statistically likely toform one or more combined learned functions that are useful and/oreffective for the training data.

In the depicted embodiment, the predictive compiler module 206 includesan extender module 308. The extender module 308, in certain embodiments,is configured to add one or more layers to a learned function. Forexample, the extender module 308 may extend a learned function orcombined learned function by adding a probabilistic model layer, such asa Bayesian belief network layer, a Bayes classifier layer, a Boltzmannlayer, or the like.

Certain classes of learned functions, such as probabilistic models, maybe configured to receive either instances of one or more features asinput, or the output results of other learned functions, such as aclassification and a confidence metric, an inferred function, aregression function, an answer, a prediction, a recognized pattern, arule, a recommendation, or the like. The extender module 308 may usethese types of learned functions to extend other learned functions. Theextender module 308 may extend learned functions generated by thefunction generator module 204 directly, may extend combined learnedfunctions from the combiner module 306, may extend other extendedlearned functions, may extend synthesized learned functions from thesynthesizer module 310, or the like.

In one embodiment, the extender module 308 determines which learnedfunctions to extend, how to extend learned functions, or the like basedon evaluation metadata from the metadata library 314. The extendermodule 308, in certain embodiments, may request one or more additionallearned functions from the function generator module 204 and/or one ormore additional combined learned functions from the combiner module 306,for the extender module 308 to extend.

While the extending of learned functions may be informed by evaluationmetadata for the learned functions, in certain embodiments, the extendermodule 308 generates a large number of extended learned functionspseudo-randomly. For example, the extender module 308, in oneembodiment, may extend each possible learned function and/or combinationof learned functions, may extend a selected subset of learned functions,may extend as many learned functions as possible given one or morelimitations or constraints, or the like, for evaluation by the functionevaluator module 312. In certain embodiments, by generating a largenumber of extended learned functions, the extender module 308 isstatistically likely to form one or more extended learned functionsand/or combined extended learned functions that are useful and/oreffective for the training data.

In the depicted embodiment, the predictive compiler module 206 includesa synthesizer module 310. The synthesizer module 310, in certainembodiments, is configured to organize a subset of learned functionsinto the predictive ensemble 304, as synthesized learned functions 324.In a further embodiment, the synthesizer module 310 includes evaluationmetadata from the metadata library 314 of the function evaluator module312 in the predictive ensemble 304 as a synthesized metadata rule set322, so that the predictive ensemble 304 includes synthesized learnedfunctions 324 and evaluation metadata, the synthesized metadata rule set322, for the synthesized learned functions 324.

The learned functions that the synthesizer module 310 synthesizes ororganizes into the synthesized learned functions 324 of the predictiveensemble 304, may include learned functions directly from the functiongenerator module 204, combined learned functions from the combinermodule 306, extended learned functions from the extender module 308,combined extended learned functions, or the like. As described below, inone embodiment, the function selector module 316 selects the learnedfunctions for the synthesizer module 310 to include in the predictiveensemble 304. In certain embodiments, the synthesizer module 310organizes learned functions by preparing the learned functions and theassociated evaluation metadata for processing workload data to reach aresult. For example, as described below, the synthesizer module 310 mayorganize and/or synthesize the synthesized learned functions 324 and thesynthesized metadata rule set 322 for the orchestration module 320 touse to direct workload data through the synthesized learned functions324 to produce a result.

In one embodiment, the function evaluator module 312 evaluates thesynthesized learned functions 324 that the synthesizer module 310organizes, and the synthesizer module 310 synthesizes and/or organizesthe synthesized metadata rule set 322 based on evaluation metadata thatthe function evaluation module 312 generates during the evaluation ofthe synthesized learned functions 324, from the metadata library 314 orthe like.

In the depicted embodiment, the predictive compiler module 206 includesa function evaluator module 312. The function evaluator module 312 isconfigured to evaluate learned functions using test data, or the like.The function evaluator module 312 may evaluate learned functionsgenerated by the function generator module 204, learned functionscombined by the combiner module 306 described above, learned functionsextended by the extender module 308 described above, combined extendedlearned functions, synthesized learned functions 324 organized into thepredictive ensemble 304 by the synthesizer module 310 described above,or the like.

Test data for a learned function, in certain embodiments, comprises adifferent subset of the initialization data for the learned functionthan the function generator module 204 used as training data. Thefunction evaluator module 312, in one embodiment, evaluates a learnedfunction by inputting the test data into the learned function to producea result, such as a classification, a confidence metric, an inferredfunction, a regression function, an answer, a prediction, a recognizedpattern, a rule, a recommendation, or another result.

Test data, in certain embodiments, comprises a subset of initializationdata, with a feature associated with the requested result removed, sothat the function evaluator module 312 may compare the result from thelearned function to the instances of the removed feature to determinethe accuracy and/or effectiveness of the learned function for each testinstance. For example, if a client 104 has requested a predictiveensemble 304 to predict whether a customer will be a repeat customer,and provided historical customer information as initialization data, thefunction evaluator module 312 may input a test data set comprising oneor more features of the initialization data other than whether thecustomer was a repeat customer into the learned function, and comparethe resulting predictions to the initialization data to determine theaccuracy and/or effectiveness of the learned function.

The function evaluator module 312, in one embodiment, is configured tomaintain evaluation metadata for an evaluated learned function in themetadata library 314. The evaluation metadata, in certain embodiments,comprises log data generated by the function generator module 204 whilegenerating learned functions, the function evaluator module 312 whileevaluating learned functions, or the like.

In one embodiment, the evaluation metadata includes indicators of one ormore training data sets that the function generator module 204 used togenerate a learned function. The evaluation metadata, in anotherembodiment, includes indicators of one or more test data sets that thefunction evaluator module 312 used to evaluate a learned function. In afurther embodiment, the evaluation metadata includes indicators of oneor more decisions made by and/or branches taken by a learned functionduring an evaluation by the function evaluator module 312. Theevaluation metadata, in another embodiment, includes the resultsdetermined by a learned function during an evaluation by the functionevaluator module 312. In one embodiment, the evaluation metadata mayinclude evaluation metrics, learning metrics, effectiveness metrics,convergence metrics, or the like for a learned function based on anevaluation of the learned function. An evaluation metric, learningmetrics, effectiveness metric, convergence metric, or the like may bebased on a comparison of the results from a learned function to actualvalues from initialization data, and may be represented by a correctnessindicator for each evaluated instance, a percentage, a ratio, or thelike. Different classes of learned functions, in certain embodiments,may have different types of evaluation metadata.

The metadata library 314, in one embodiment, provides evaluationmetadata for learned functions to the feature selector module 302, thepredictive correlation module 318, the combiner module 306, the extendermodule 308, and/or the synthesizer module 310. The metadata library 314may provide an API, a shared library, one or more function calls, or thelike providing access to evaluation metadata. The metadata library 314,in various embodiments, may store or maintain evaluation metadata in adatabase format, as one or more flat files, as one or more lookuptables, as a sequential log or log file, or as one or more other datastructures. In one embodiment, the metadata library 314 may indexevaluation metadata by learned function, by feature, by instance, bytraining data, by test data, by effectiveness, and/or by anothercategory or attribute and may provide query access to the indexedevaluation metadata. The function evaluator module 312 may update themetadata library 314 in response to each evaluation of a learnedfunction, adding evaluation metadata to the metadata library 314 or thelike.

The function selector module 316, in certain embodiments, may useevaluation metadata from the metadata library 314 to select learnedfunctions for the combiner module 306 to combine, for the extendermodule 308 to extend, for the synthesizer module 310 to include in thepredictive ensemble 304, or the like. For example, in one embodiment,the function selector module 316 may select learned functions based onevaluation metrics, learning metrics, effectiveness metrics, convergencemetrics, or the like. In another embodiment, the function selectormodule 316 may select learned functions for the combiner module 306 tocombine and/or for the extender module 308 to extend based on featuresof training data used to generate the learned functions, or the like.

The predictive ensemble 304, in certain embodiments, provides predictiveresults for an analysis request by processing workload data of theanalysis request using a plurality of learned functions (e.g., thesynthesized learned functions 324). As described above, results from thepredictive ensemble 304, in various embodiments, may include aclassification, a confidence metric, an inferred function, a regressionfunction, an answer, a prediction, a recognized pattern, a rule, arecommendation, and/or another result. For example, in one embodiment,the predictive ensemble 304 provides a classification and a confidencemetric for each instance of workload data input into the predictiveensemble 304, or the like. Workload data, in certain embodiments, may besubstantially similar to test data, but the missing feature from theinitialization data is not known, and is to be solved for by thepredictive ensemble 304. A classification, in certain embodiments,comprises a value for a missing feature in an instance of workload data,such as a prediction, an answer, or the like. For example, if themissing feature represents a question, the classification may representa predicted answer, and the associated confidence metric may be anestimated strength or accuracy of the predicted answer. Aclassification, in certain embodiments, may comprise a binary value(e.g., yes or no), a rating on a scale (e.g., 4 on a scale of 1 to 5),or another data type for a feature. A confidence metric, in certainembodiments, may comprise a percentage, a ratio, a rating on a scale, oranother indicator of accuracy, effectiveness, and/or confidence.

In the depicted embodiment, the predictive ensemble 304 includes anorchestration module 320. The orchestration module 320, in certainembodiments, is configured to direct workload data through thepredictive ensemble 304 to produce a result, such as a classification, aconfidence metric, an inferred function, a regression function, ananswer, a prediction, a recognized pattern, a rule, a recommendation,and/or another result. In one embodiment, the orchestration module 320uses evaluation metadata from the function evaluator module 312 and/orthe metadata library 314, such as the synthesized metadata rule set 322,to determine how to direct workload data through the synthesized learnedfunctions 324 of the predictive ensemble 304. As described below withregard to FIG. 8, in certain embodiments, the synthesized metadata ruleset 322 comprises a set of rules or conditions from the evaluationmetadata of the metadata library 314 that indicate to the orchestrationmodule 320 which features, instances, or the like should be directed towhich synthesized learned function 324.

For example, the evaluation metadata from the metadata library 314 mayindicate which learned functions were trained using which featuresand/or instances, how effective different learned functions were atmaking predictions based on different features and/or instances, or thelike. The synthesizer module 310 may use that evaluation metadata todetermine rules for the synthesized metadata rule set 322, indicatingwhich features, which instances, or the like the orchestration module320 the orchestration module 320 should direct through which learnedfunctions, in which order, or the like. The synthesized metadata ruleset 322, in one embodiment, may comprise a decision tree or other datastructure comprising rules which the orchestration module 320 may followto direct workload data through the synthesized learned functions 324 ofthe predictive ensemble 304.

FIG. 4 depicts one embodiment of a system 400 for a predictive analyticsfactory. The system 400, in the depicted embodiment, includes severalclients 104 in communication with a predictive analytics module 102 overa data network 106, substantially as described above with regard toFIG. 1. The predictive analytics module 102 of FIG. 4 is substantiallysimilar to the predictive analytics module 102 of FIG. 3, but furtherincludes an interface module 402, a predictive analytics factory 404,and a data repository 406.

The interface module 312, in certain embodiments, is configured toreceive requests from clients 104, to provide results to a client 104,or the like. The interface module 312 may provide a predictive analyticsinterface to clients 104, such as an API, a shared library, a hardwarecommand interface, or the like, over which clients 104 may make requestsand receive results. The interface module 312 may support new ensemblerequests from clients 104, allowing clients 104 to request generation ofa new predictive ensemble from the predictive analytics factory 404 orthe like. As described above, a new ensemble request may includeinitialization data; one or more ensemble parameters; a feature, query,question or the like for which a client 104 would like a predictiveensemble 304 to predict a result; or the like. The interface module 312may support analysis requests for a result from a predictive ensemble304. As described above, an analysis request may include workload data;a feature, query, question or the like; a predictive ensemble 304; ormay include other analysis parameters.

In certain embodiments, the predictive analytics module 102 may maintaina library of generated predictive ensembles 304, from which clients 104may request results. In such embodiments, the interface module 402 mayreturn a reference, pointer, or other identifier of the requestedpredictive ensemble 304 to the requesting client 104, which the client104 may use in analysis requests. In another embodiment, in response tothe predictive analytics factory 404 generating a predictive ensemble304 to satisfy a new ensemble request, the interface module 402 mayreturn the actual predictive ensemble 304 to the client 104, for theclient 104 to manage, and the client 104 may include the predictiveensemble 304 in each analysis request.

The interface module 312 may cooperate with the predictive analyticsfactory 404 to service new ensemble requests, may cooperate with thepredictive ensemble 304 to provide a result to an analysis request, orthe like. The predictive analytics factory 404, in the depictedembodiment, includes the function generator module 204, the featureselector module 302, the predictive correlation module 318, and thepredictive compiler module 206, as described above. The predictiveanalytics factory 404, in the depicted embodiment, also includes a datarepository 406.

The data repository 406, in one embodiment, stores initialization data,so that the function generator module 204, the feature selector module302, the predictive correlation module 318, and/or the predictivecompiler module 206 may access the initialization data to generate,combine, extend, evaluate, and/or synthesize learned functions andpredictive ensembles 304. The data repository 406 may provideinitialization data indexed by feature, by instance, by training datasubset, by test data subset, by new ensemble request, or the like. Bymaintaining initialization data in a data repository 406, in certainembodiments, the predictive analytics factory 404 ensures that theinitialization data is accessible throughout the predictive ensemble 304building process, for the function generator module 204 to generatelearned functions, for the feature selector module 302 to determinewhich features should be used in the predictive ensemble 304, for thepredictive correlation module 318 to determine which features correlatewith the highest confidence metrics, for the combiner module 306 tocombine learned functions, for the extender module 308 to extend learnedfunctions, for the function evaluator module 312 to evaluate learnedfunctions, for the synthesizer module 310 to synthesize learnedfunctions 324 and/or metadata rule sets 322, or the like.

In the depicted embodiment, the data receiver module 202 is integratedwith the interface module 402, to receive initialization data, includingtraining data and test data, from new ensemble requests. The datareceiver module 202 stores initialization data in the data repository406. The function generator module 204 is in communication with the datarepository 406, in one embodiment, so that the function generator module204 may generate learned functions based on training data sets from thedata repository 406. The feature selector module 202 and/or thepredictive correlation module 318, in certain embodiments, may cooperatewith the function generator module 204 and/or the predictive compilermodule 206 to determine which features to use in the predictive ensemble204, which features are most predictive or correlate with the highestconfidence metrics, or the like.

Within the predictive compiler module 206, the combiner module 306, theextender module 308, and the synthesizer module 310 are each incommunication with both the function generator module 204 and thefunction evaluator module 312. The function generator module 204, asdescribed above, may generate an initial large amount of learnedfunctions, from different classes or the like, which the functionevaluator module 312 evaluates using test data sets from the datarepository 406. The combiner module 306 may combine different learnedfunctions from the function generator module 204 to form combinedlearned functions, which the function evaluator module 312 evaluatesusing test data from the data repository 406. The combiner module 306may also request additional learned functions from the functiongenerator module 204.

The extender module 308, in one embodiment, extends learned functionsfrom the function generator module 204 and/or the combiner module 306.The extender module 308 may also request additional learned functionsfrom the function generator module 204. The function evaluator module312 evaluates the extended learned functions using test data sets fromthe data repository 406. The synthesizer module 310 organizes, combines,or otherwise synthesizes learned functions from the function generatormodule 204, the combiner module 306, and/or the extender module 308 intosynthesized learned functions 324 for the predictive ensemble 304. Thefunction evaluator module 312 evaluates the synthesized learnedfunctions 324, and the synthesizer module 310 organizes or synthesizesthe evaluation metadata from the metadata library 314 into a synthesizedmetadata rule set 322 for the synthesized learned functions 324.

As described above, as the function evaluator module 312 evaluateslearned functions from the function generator module 204, the combinermodule 306, the extender module 308, and/or the synthesizer module 310,the function evaluator module 312 generates evaluation metadata for thelearned functions and stores the evaluation metadata in the metadatalibrary 314. In the depicted embodiment, in response to an evaluation bythe function evaluator module 312, the function selector module 316selects one or more learned functions based on evaluation metadata fromthe metadata library 314. For example, the function selector module 316may select learned functions for the combiner module 306 to combine, forthe extender module 308 to extend, for the synthesizer module 310 tosynthesize, or the like.

FIG. 5 depicts one embodiment 500 of learned functions 502, 504, 506 fora predictive ensemble 304. The learned functions 502, 504, 506 arepresented by way of example, and in other embodiments, other types andcombinations of learned functions may be used, as described above.Further, in other embodiments, the predictive ensemble 204 may includean orchestration module 320, a synthesized metadata rule set 322, or thelike. In one embodiment, the function generator module 204 generates thelearned functions 502. The learned functions 502, in the depictedembodiment, include various collections of selected learned functions502 from different classes including a collection of decision trees 502a, configured to receive or process a subset A-F of the feature set ofthe predictive ensemble 304, a collection of support vector machines(“SVMs”) 502 b with certain kernels and with an input space configuredwith particular subsets of the feature set G-L, and a selected group ofregression models 502 c, here depicted as a suite of single layer (“SL”)neural nets trained on certain feature sets K-N.

The example combined learned functions 504, combined by the combinermodule 306 or the like, include various instances of forests of decisiontrees 504 a configured to receive or process features N-S, a collectionof combined trees with support vector machine decision nodes 504 b withspecific kernels, their parameters and the features used to define theinput space of features T-U, as well as combined functions 504 c in theform of trees with a regression decision at the root and linear, treenode decisions at the leaves, configured to receive or process featuresL-R.

Component class extended learned functions 506, extended by the extendermodule 308 or the like, include a set of extended functions such as aforest of trees 506 a with tree decisions at the roots and variousmargin classifiers along the branches, which have been extended with alayer of Boltzmann type Bayesian probabilistic classifiers. Extendedlearned function 506 b includes a tree with various regression decisionsat the roots, a combination of standard tree 504 b and regressiondecision tree 504 c and the branches are extended by a Bayes classifierlayer trained with a particular training set exclusive of those used totrain the nodes.

FIG. 6 depicts one embodiment of a method 600 for a predictive analyticsfactory. The method 600 begins, and the data receiver module 202receives 602 training data. The function generator module 204 generates604 a plurality of learned functions from multiple classes based on thereceived 602 training data. The predictive compiler module 206 forms 606a predictive ensemble comprising a subset of learned functions from atleast two classes, and the method 600 ends.

FIG. 7 depicts another embodiment of a method 700 for a predictiveanalytics factory. The method 700 begins, and the interface module 402monitors 702 requests until the interface module 402 receives 702 ananalytics request from a client 104 or the like.

If the interface module 402 receives 702 a new ensemble request, thedata receiver module 202 receives 704 training data for the newensemble, as initialization data or the like. The function generatormodule 204 generates 706 a plurality of learned functions based on thereceived 704 training data, from different predictive analytics classes.The function evaluator module 312 evaluates 708 the plurality ofgenerated 706 learned functions to generate evaluation metadata. Thecombiner module 306 combines 710 learned functions based on the metadatafrom the evaluation 708. The combiner module 306 may request that thefunction generator module 204 generate 712 additional learned functionsfor the combiner module 306 to combine.

The function evaluator module 312 evaluates 714 the combined 710 learnedfunctions and generates additional evaluation metadata. The extendermodule 308 extends 716 one or more learned functions by adding one ormore layers to the one or more learned functions, such as aprobabilistic model layer or the like. In certain embodiments, theextender module 308 extends 716 combined 710 learned functions based onthe evaluation 712 of the combined learned functions. The extendermodule 308 may request that the function generator module 204 generate718 additional learned functions for the extender module 308 to extend.The function evaluator module 312 evaluates 720 the extended 716 learnedfunctions. The function selector module 316 selects 722 at least twolearned functions, such as the generated 706 learned functions, thecombined 710 learned functions, the extended 716 learned functions, orthe like, based on evaluation metadata from one or more of theevaluations 708, 714, 720.

The synthesizer module 310 synthesizes 724 the selected 722 learnedfunctions into synthesized learned functions 324. The function evaluatormodule 312 evaluates 726 the synthesized learned functions 324 togenerate a synthesized metadata rule set 322. The synthesizer module 310organizes 728 the synthesized 724 learned functions 324 and thesynthesized metadata rule set 322 into a predictive ensemble 304. Theinterface module 402 provides 730 a result to the requesting client 104,such as the predictive ensemble, a reference to the predictive ensemble,an acknowledgment, or the like, and the interface module 402 continuesto monitor 702 requests.

If the interface module 402 receives 702 an analysis request, the datareceiver module 202 receives 732 workload data associated with theanalysis request. The orchestration module 320 directs 734 the workloaddata through a predictive ensemble 304 associated with the received 702analysis request to produce a result, such as a classification, aconfidence metric, an inferred function, a regression function, ananswer, a prediction, a recognized pattern, a rule, a recommendation,and/or another result. The interface module 402 provides 730 theproduced result to the requesting client 104, and the interface module402 continues to monitor 702 requests.

FIG. 8 depicts one embodiment of a method 800 for directing data througha predictive ensemble. The specific synthesized metadata rule set 322 ofthe depicted method 800 is presented by way of example only, and manyother rules and rule sets may be used.

A new instance of workload data is presented 802 to the predictiveensemble 304 through the interface module 402. The data is processedthrough the data receiver module 202 and configured for the particularanalysis request as initiated by a client 104. In this embodiment theorchestration module 320 evaluates a certain set of features associateswith the data instance against a set of thresholds contained within thesynthesized metadata rule set 322.

A binary decision 804 passes the instance to, in one case, a certaincombined and extended function 806 configured for features A-F or in theother case a different, parallel combined function 808 configured topredict against a feature set G-M. In the first case 806, if the outputconfidence passes 810 a certain threshold as given by the meta-data ruleset the instance is passed to a synthesized, extended regressionfunction 814 for final evaluation, else the instance is passed to acombined collection 816 whose output is a weighted voted basedprocessing a certain set of features. In the second case 808 a differentcombined function 812 with a simple vote output results in the instancebeing evaluated by a set of base learned functions extended by aBoltzmann type extension 818 or, if a prescribed threshold is meet theoutput of the synthesized function is the simple vote. The interfacemodule 402 provides 820 the result of the orchestration module directingworkload data through the predictive ensemble 304 to a requesting client104 and the method 800 continues.

The present disclosure may be embodied in other specific forms withoutdeparting from its spirit or essential characteristics. The describedembodiments are to be considered in all respects only as illustrativeand not restrictive. The scope of the disclosure is, therefore,indicated by the appended claims rather than by the foregoingdescription. All changes which come within the meaning and range ofequivalency of the claims are to be embraced within their scope.

What is claimed is:
 1. An apparatus for a predictive analytics factory,the apparatus comprising: a function generator module configured togenerate a plurality of learned functions based on training data withoutprior knowledge regarding suitability of the generated learned functionsfor the training data; a function evaluator module configured to performan evaluation of the plurality of learned functions using test data andto maintain evaluation metadata for the plurality of learned functions;and a predictive compiler module configured to form a predictiveensemble based on the evaluation metadata, the predictive ensemblecomprising a subset of multiple learned functions from the plurality oflearned functions.
 2. The apparatus of claim 1, further comprising afeature selector module configured to, in response to the functiongenerator module generating the plurality of learned functions,determine a subset of features from the training data for use in thepredictive ensemble based on the evaluation metadata, the predictivecompiler module configured to form the predictive ensemble using theselected subset of features.
 3. The apparatus of claim 2, wherein one ormore of the features of the training data are selected by a user asrequired and the feature selector module is configured to select one ormore optional features to include in the subset of features with therequired one or more features.
 4. The apparatus of claim 1, wherein thepredictive compiler module is configured to combine learned functionsfrom the plurality of learned functions to form combined learnedfunctions, the predictive ensemble comprising at least one combinedlearned function.
 5. The apparatus of claim 1, wherein the predictivecompiler module is configured to add one or more layers to at least aportion of the plurality of learned functions to form one or moreextended learned functions, at least one of the one or more layerscomprising a probabilistic model, the predictive ensemble comprising atleast one extended learned function.
 6. The apparatus of claim 1,wherein the predictive compiler module is configured to form thepredictive ensemble by organizing the subset of multiple learnedfunctions into the predictive ensemble, the predictive ensemblecomprising the subset of multiple learned functions and a rule setsynthesized from the evaluation metadata for the subset of learnedfunctions to direct data through the multiple learned functions suchthat different learned functions of the ensemble process differentsubsets of the data based on the evaluation metadata.
 7. The apparatusof claim 1, further comprising an orchestration module configured todirect workload data through the predictive ensemble based on theevaluation metadata data to produce a classification for the workloaddata and a confidence metric for the classification.
 8. The apparatus ofclaim 1, further comprising an interface module configured to receive ananalytics request from a client and to provide an analytics result tothe client, the analytics request comprising workload data with similarfeatures to the training data, the analytics result produced by thepredictive ensemble.
 9. A system for a predictive analytics factory, thesystem comprising: a host computing device in communication with atleast one client; a predictive analytics module executing on the hostcomputing device, the predictive analytics module determining aplurality of learned functions using training data received from the atleast one client without prior knowledge regarding suitability of thedetermined learned functions for the training data, selecting a subsetof the learned functions based on evaluation metadata generated for theplurality of learned functions, and forming a predictive ensemblecomprising the selected subset of the learned functions from theplurality of learned functions.
 10. The system of claim 9, wherein thepredictive analytics module comprises a predictive compiler and theplurality of learned function comprise computer readable code configuredby the predictive compiler to accept an input comprising instances ofone or more features of the training data and to provide a result. 11.The system of claim 10, wherein the result comprises one or more of aclassification, a confidence metric, an inferred function, a regressionfunction, an answer, a prediction, a recognized pattern, a rule, arecommendation, a subset of the instances, and a subset of the one ormore features.
 12. The system of claim 9, wherein the predictiveanalytics module generates and evaluates the plurality of learnedfunctions using parallel computing on multiple processors of the hostcomputing device.
 13. The system of claim 9, wherein the predictiveanalytics module determines the plurality of learned functions inresponse to a request from the at least one client, the requestcomprising a query, the ensemble formed to predict a result for thequery.
 14. The system of claim 13, wherein the predictive analyticsmodule returns the ensemble to the at least one client to satisfy therequest.
 15. The system of claim 13, wherein the predictive analyticsmodule returns the result for the query to the at least one client tosatisfy the request, the predictive analytics module maintaining theensemble in a library of a plurality of generated ensembles from whichthe predictive analytics module satisfies subsequent requests from theat least one client.
 16. The system of claim 13, wherein the predictiveanalytics module receives the request from the at least one client usingone or more of an application programming interface, a shared library, ahardware command interface, and a data network.
 17. The system of claim9, wherein the predictive ensemble comprises a rule set synthesized fromthe evaluation metadata to direct data through the subset of the learnedfunctions.
 18. A predictive analytics ensemble comprising: multiplelearned functions synthesized from a larger plurality of learnedfunctions, the larger plurality of learned functions generated fromtraining data without prior knowledge of a suitability of the largerplurality of learned functions for the training data; a metadata ruleset synthesized from the evaluation metadata for the plurality oflearned functions for directing data through different learned functionsof the multiple learned functions to produce a result; and anorchestration module configured to direct the data through the differentlearned functions of the multiple learned functions based on thesynthesized metadata rule set to produce the result.
 19. The predictiveanalytics ensemble of claim 18, further comprising a predictivecorrelation module configured to correlate one or more features of themultiple learned functions with a confidence metric associated with theresult.
 20. The predictive analytics ensemble of claim 19, wherein thepredictive correlation module is configured to provide a listing of theone or more features correlated with the result to a client.